
<template>
    <Card>
        <div>
            <div class="contract-detial-btns" v-if="isApprove">
                <Button type="primary" @click="back">返回</Button>
                <template v-if="!pageParams.readOnly">
                    <Button type="primary" @click="approve('pass')">审核通过</Button>
                    <Button type="primary" @click="approve('return')">退件</Button>
                    <Button type="primary" @click="approve('reject')">拒绝</Button>
                </template>
            </div>
            <div class="contract-detial-btns" v-else>
                <Button type="primary" @click="back">返回</Button>
                <template v-if="!pageParams.readOnly">
                    <!--<Button type="primary" @click="submit">提交</Button>-->
                    <Button type="primary" @click="submitToWorkFlow">提交</Button>
                </template>
            </div>
        </div>
        <Collapse v-model="openPanel">
            <Panel name="1" v-if="isApprove || pageParams.processStatus === 'approved'">
                日志
                <div class="content" slot="content">
                    <approveHistory :Obj="Obj" />
                </div>
            </Panel>
          <!--  <Panel name="2">
                基本信息
                <div class="content" slot="content">
                    <BaseInfo ref="baseInfo" :formData="pageInfo" />
                </div>
            </Panel>-->
            <Panel name="3">
                合同信息
                <div class="content" slot="content">
                    <contractInfo :Obj="Obj" :readOnly="readOnly" />
                </div>
            </Panel>
            <Panel name="4">
                金融产品
                <div class="content" slot="content">
                    <FinanceInfo :Obj="Obj" />
                </div>
            </Panel>
            <Panel name="5">
                业务办理
                <div class="content" slot="content">
                    <Business
                        ref="business"
                        :Obj="Obj"
                        :pageParams="pageInfo"
                        :dataDict="dataDict"
                        :businessSource= businessSource
                        :isApprove="isApprove"
                        :isLoan="isLoan"
                        @saveDataFn="saveDataFn"
                        @submitDataFn="submitDataFn"
                        @childBusinessForm="childBusinessForm"
                        @closeSpin="closeSpin"
                    />
                </div>
            </Panel>
            <Panel name="6" v-if="isApprove && !pageParams.readOnly">
                当前用户: {{userInfo ? userInfo.userRealName :''}}
                <div class="content" slot="content">
                    <ContractCurrentUser ref="contractCurrentUser" :Obj="{type:'costExempt'}" @childUserForm="childUserForm" @closeSpin="closeSpin" />
                </div>
            </Panel>
        </Collapse>
    </Card>
</template>
<script>
    import moment from "moment";
    import {changeContactSubmit} from "_p/basic/api/contract/post-loan-info-change/change-contact";

    import {costExemptApprove, saveCostExemptList} from "@/projects/basic/api/contract/cost-exempt/costExempt";
    // 日志
    import approveHistory from "_p/basic/pages/contract/common/approve-history/approve-history";
    // 金融产品
    import FinanceInfo from "_p/basic/pages/contract/common/finance-info/finance-info";
    // 业务办理
    import Business from "_p/basic/pages/contract/cost-exempt/cost-exempt-details/Business";
    // 合同信息
    import contractInfo from "_p/basic/pages/contract/common/contract-info/contract-info";
    // 基本信息
    import BaseInfo from "_p/basic/pages/contract/common/base-info";
    // 当前用户
    import ContractCurrentUser from "_p/basic/pages/contract/common/current-user/contractCurrentUser";

    export default {
    name: "cost-exempt-details",
    components: {
        approveHistory,
        FinanceInfo,
        contractInfo,
        BaseInfo,
        ContractCurrentUser,
        Business
    },
    props: {
        Obj: {
            //caseNo, contractNo, roleType
            type: Object,
            required: true
        },
        spinShow: {
            type: Boolean,
            required: true
        },
        // 是否是供应商
        isSP: {
            type: Boolean,
            required: true
        },
        //是否是审批页面
        isApprove: {
            type: Boolean,
            required: true
        },
        pageParams: {
            type: Object,
            required: true
        },
        //合同号
        contractNo: {
            type: String,
            required: true
        },
        dataDict: {
            type: Object
        },
        userInfo: {
            type: Object,
            required: true
        },
        roleType: {
            type: Array,
            required: true
        },
        businessSource: {
            type: String,
            required: true
        },
        isLoan: {
            type: String,
            required: true
        },
        // @showSpin="showSpin"
        // @closeSpin="closeSpin"
        // @back="back"
    },
    data() {
        return {
            loading: true,
            openPanel: [0, 2, 3, 4, 5, 6],
            readOnly: null,
            approvalOperating: "", //审批结果
            pageInfo: this.pageParams
        };
    },

    mounted() {
        this.init();
    },
    methods: {
        init() {
            if (this.$refs.baseInfo) {
                this.$refs.baseInfo.formData = Object.assign(
                    {},
                    this.$refs.baseInfo.formData,
                    this.pageInfo
                );
            }
        },
     /*   save() {
            if (this.$refs.business) {
                this.showSpin();
                this.$refs.business.formValidate("saveDataFn");
            }
        },
        */
        submit() {
            this.$Modal.confirm({
                title: "确认提交？",
                onOk: () => {
                    if (this.$refs.business) {
                        this.showSpin();
                        this.$refs.business.submit();
                    }
                }
            });

        },
        submitToWorkFlow() {
            this.$Modal.confirm({
                title: "确认提交？",
                onOk: () => {
                    if (this.$refs.business) {
                        this.showSpin();
                        this.$refs.business.submitToWorkFlow();
                    }
                }
            });
        },
        // 审核等按钮
        approve(name) {
            if (!name) return;
            let t, val;
            switch (name) {
                case "pass":
                    t = "审核通过";
                    val = "suggestCheckF";
                    break;
                case "return":
                    t = "退件";
                    val = "sendBack";
                    break;
                case "reject":
                    t = "拒绝";
                    val = "suggestRejectF";
                    break;
            }
            this.$Modal.confirm({
                title: `确认${t}？`,
                onOk: () => {
                    if (this.$refs.business) {
                        this.showSpin();
                        this.approvalOperating = val;
                        // 验证 business 组件数据 给下一个方法
                        this.$refs.business.formValidate("childBusinessForm");
                        //调用业务页面的提交方法
                       // this.$refs.business.approveCostExempt(val);
                    }
                }
            });
        },
        // 保存 请求
        saveDataFn(data) {
            if (!data) return;
            let d = this.formatData(data);

            saveCostExemptList(d)
                .then(res => {
                    this.$emit("closeSpin");
                    if (res.code === "0000") {
                        this.$Message.success("保存成功!");
                        this.pageInfo = res.data;
                         this.$refs.baseInfo.formData = res.data;
                    }
                })
                .catch(e => {
                    this.$emit("closeSpin");
                });
        },
        //提交 请求
        submitDataFn(data) {
            if (!data) return;
            let d = this.formatData(data);

            changeContactSubmit(d,this.isSP)
                .then(res => {
                    this.$emit("closeSpin");
                    if (res.code === "0000") {
                        this.$Message.success("提交成功!");
                        this.back();
                    }
                })
                .catch(e => {
                    this.$emit("closeSpin");
                });
        },
        // 审批 请求
        // Business 组件数据
        childBusinessForm(data) {
            if (!data) return;
            let bussiness = this.formatData(data);
            // 验证 contractCurrentUser 组件数据 传给下个方法
            this.$refs.contractCurrentUser.formValidate(
                "childUserForm",
                bussiness
            );
        },
        // contractCurrentUser 组件数据
        childUserForm(data) {
            if (!data) return;
            let d = Object.assign({}, data, {
                approvalOperating: this.approvalOperating
            });
            costExemptApprove(d)
                .then(res => {
                    this.$emit("closeSpin");
                    if (res.code === "0000") {
                        this.$Message.success("成功!");
                        this.back();
                    }
                })
                .catch(e => {
                    this.$emit("closeSpin");
                });
        },

        // 格式化
        formatData(data) {
            if (!data) return {};
            let d = Object.assign({businessSource:this.businessSource}, this.pageInfo, data);
           /* if (d.createTime instanceof Date)
                d.createTime = moment(d.createTime).format(
                    "YYYY-MM-DD HH:mm:ss"
                );
            if (d.endDate instanceof Date)
                d.endDate = moment(d.endDate).format("YYYY-MM-DD HH:mm:ss");*/
            d.endDate = null
            d.processPerson = this.isLoan;
            return d;
        },
        showSpin() {
            this.$emit("showSpin");
        },
        closeSpin() {
            this.$emit("closeSpin");
        },
        back() {
            this.$emit("back");
        }
    }
};
</script>
